package processus;

public class Horloge {
    
    int time = 0;

    /**
     * Fonction appelée lors d'un appel local
     * @return Renvoi la nouvelle valeur de l'horloge
     */
    public synchronized int actionLocale() {
        time++;
        return time;
    }
    
    /**
     * Fonction appelée lors de l'envoi d'un message
     * @return Renvoi l'estampille d'envoi
     */
    public synchronized int messageSent() {
        time++;
        return time;
    }
    
    /**
     * Fonction appelée lors de la réception d'un message
     * @param estampille : estampille du message reçu
     * @return Renvoi la nouvelle valeur de l'horloge
     */
    public synchronized int messageReceived(int estampille) {
        time = Math.max(time, estampille)+1;
        return time;
    }

    public int getTime() {
        return time;
    }
    
    
}
